1
Il metro dell'efficienza: perché la notazione O è il linguaggio comune per gli sviluppatori?
AI028Lesson 2
00:00

Complessità temporale (Time Complexity) Non misura i secondi assoluti di esecuzione di un algoritmo, ma è una funzione matematica che descrive come il tempo di esecuzione cresce con l'aumentare della dimensione del problema $n$. Si basa sul principio fondamentale che l'analisi degli algoritmi è un metodo di misurazione indipendente dall'implementazione.

Dimensione $n$Tempo $T(n)$O(n²)O(n)O(log n)O(1)

Perché è un linguaggio comune?

  • Progresso quantitativo: la notazione O ignora i termini di ordine inferiore e le costanti, concentrandosi solo sulordine di grandezza (Order of Magnitude).
  • Determinismo nella misurazione: gli sviluppatori di solito si basano sulcaso peggiore (Worst Case) come riferimento, fornendo una garanzia inferiore prestazionale.
  • Decisioni indipendenti dall'ambiente: indipendentemente dal supercomputer o dal chip embedded, i vantaggi derivanti da un'ottimizzazione da $O(n^2)$ a $O(n \log n)$ sono essenziali.
Metodo dei conteggi (Counting)
Calcola il numero di occorrenze di ciascun carattere in due stringhe. Se le liste dei conteggi sono identiche, allora le due stringhe sono certamente anagrammi. Questo metodo realizza metodo dei conteggi: $O(n)$ un'efficienza elevata.